package controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

import view.PanelBan;

public class SellController implements ActionListener {
	private PanelBan panelBan;

	public SellController(JPanel panelBan) {
		this.panelBan = (PanelBan) panelBan;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		switch (cmd) {
		case "add":
			if (!panelBan.getData().isEmpty()) {
				Vector<String> tmp = panelBan.getData().get(
						panelBan.getData().size() - 1);
				for (int i = 0; i < panelBan.getTable().getColumnCount(); i++) {
					for (int j = 0; j < tmp.size(); j++) {
						if (tmp.get(j) == null) {
							JOptionPane.showMessageDialog(panelBan,
									"Nhập dữ liệu còn thiếu");
							return;
						}
					}
				}
			}
			panelBan.getData().add(new Vector<String>());
			panelBan.getTableModel().setDataVector(panelBan.getData(),
					panelBan.getColumnNames());
			break;
		case "refresh":
			if (panelBan.getData().isEmpty()) {
				JOptionPane.showMessageDialog(panelBan,
						"Hiện tại chưa có dữ liệu!", "Lỗi",
						JOptionPane.ERROR_MESSAGE);
			} else if (JOptionPane.showConfirmDialog(panelBan,
					"Xóa hết danh sách dữ liệu hiện tại?", "Cảnh báo",
					JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION) {
				panelBan.getData().clear();
				panelBan.getTableModel().setDataVector(panelBan.getData(),
						panelBan.getColumnNames());
			}
			break;
		case "remove":
			int[] rows = panelBan.getTable().getSelectedRows();
			for (int i = rows.length - 1; i > -1; i--) {
				panelBan.getData().remove(rows[i]);
			}
			panelBan.getTableModel().setDataVector(panelBan.getData(),
					panelBan.getColumnNames());
			break;
		case "comp":
			if (!panelBan.getData().isEmpty()) {
				int sum = 0, sumMoney = 0, sumThue = 0;
				try {
					for (int j = 0; j < panelBan.getData().size(); j++) { // rows
						int sl = Integer.parseInt(panelBan.getData().get(j)
								.get(4));
						int donGia = Integer.parseInt(panelBan.getData().get(j)
								.get(5));
						sum += sl;
						sumMoney += (sl * donGia);
						sumThue += ((Double.parseDouble(panelBan.getData()
								.get(j).get(3)) / 100)
								* donGia * sl);
					}
					panelBan.setValue(sum, sumMoney, sumThue, sumMoney
							+ sumThue);
				} catch (Exception e2) {
					e2.printStackTrace();
					JOptionPane.showMessageDialog(panelBan, "Lỗi");
				}
			} else {
				JOptionPane.showMessageDialog(panelBan, "Chưa có dữ liệu");
			}
			break;
		}
	}
}
